﻿<?php

/**
\cond
ooooo                        
`888'                        
 888  oo.ooooo.  oooo    ooo 
 888   888' `88b  `88.  .8'  
 888   888   888   `88..8'   
 888   888   888    `888'    
o888o  888bod8P'     .8'     
       888       .o..P'      
      o888o      `Y8P'       
\endcond

\file narasimha.php
\brief	Contrôleur de narasimha, enregistre les pomodoro terminées
\author 	: 	Loïc Coenen
\date 		:	30/06/2013

**/	

/**

\brief Classe principale du narasimha

**/
class narasimha {


	/**
		\brief Constructeur
		\param maat Une instance de maat
	**/
	function __construct($maat){
		
		$maat->route('pomo', array($this, 'pomo'));
		$maat->route('log', array($this, 'log'));
		
		try{
		
			$this->db = new PDO('sqlite:db/jtjt.db');
			
		} catch(Exception $e) {
		
			echo "Impossible d'accéder à la base de données SQLite : ".$e->getMessage();
			die();
			
		}

	}


	/**
		\brief Fonction renvoyant les logs des pomodoros effectuées
		\param $_GET['tags'] les tags recherchés séparés par des points virgules
	*/
	public function log($args, $tpl)	{


		$sql = 'SELECT * FROM pomodoro';
	
		if(array_key_exists('tags',$_POST) && $_POST['tags']){

			$sql .= ' WHERE';
			$tags = explode(';', $_POST['tags']);	
			
			for($i = 0; $i < count($tags); ++$i){
				
				$sql .= ' tags LIKE "%' . trim($tags[$i])  . '%"';
				if($i < count($tags) -1)	//	C'est le dernier
					$sql .= ' AND';
	
			}
		}
	
		try{
		
			$req = $this->db->prepare($sql);
			$req->execute();
		
			$tpl->assign('pomos', array_map(function($row){
		
				$row['tags'] = array_map(function($tag){
			
					return trim($tag);
			
				}, explode(';', $row['tags']));
				return $row; 
		
			},$req->fetchAll(PDO::FETCH_ASSOC)));
		
			$tpl->display('templates/log.tpl');

		} catch(Exception $e) {
		
			echo "Impossible d'effectuer la recherche dans la base de données SQLite : ".$e->getMessage();
			echo "Requête : " . $sql;
			die();
			
		}

	}
	
	/**
		\brief Méthode enregistrant une pomodoro effectuée
		\param $_GET['tags'] les tags recherchés séparés par des points virgules
	*/
	public function pomo($args, $tpl)	{

		echo  $_POST['tags'];

		try {

			$req = $this->db->prepare('INSERT INTO pomodoro (timestamp, tags) VALUES (:timestamp,:tags)');
		
			$req->bindValue(':timestamp', time());
			$req->bindValue(':tags', $_POST['tags']);
			$req->execute();		

		} catch(Exception $e) {
		
			echo "Impossible d'effectuer la recherche dans la base de données SQLite : ".$e->getMessage();
			echo "Requête : " . $sql;
			die();
			
		}

	}

};
?>
